home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-68k-src / machines / amiga68k / include / stdio.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  6KB  |  205 lines

  1. /*  Header fuer vbcc Amiga-Version  */
  2. /*  stdio.h, teilweise angeregt aus K&R */
  3.  
  4. #ifndef __STDIO_H
  5. #define __STDIO_H 1
  6.  
  7. #define EOF (-1)
  8.  
  9. #define BUFSIZ 1024L            /*  Groesse des Buffers             */
  10. #define FOPEN_MAX   1024        /*  eigentlich auf Amiga beliebig   */
  11.  
  12. #define _IOFBF 1L               /*  Volles Buffering                */
  13. #define _IOLBF 2L               /*  Zeilenbuffer                    */
  14. #define _IONBF 3L               /*  kein Buffer                     */
  15.  
  16. #define HASBUF 1L               /*  hat einen Buffer                */
  17. #define NOBUFMEM 2L             /*  kein Buffer belegbar            */
  18.                                 /*  Returncodes von setvbuf         */
  19.  
  20. #define SEEK_SET (-1)           /*  fseek relativ zu Dateibeginn    */
  21. #define SEEK_CUR  0             /*                   akt. Pos.      */
  22. #define SEEK_END  1             /*                   Dateiende      */
  23.  
  24. #define _READ 1                 /*  Flags fuer FILE.flags, Lesen    */
  25. #define _WRITE 2
  26. #define _UNBUF 4                /*  ungepuffert                     */
  27. #define _EOF 8                  /*  Fileende                        */
  28. #define _ERR 16                 /*  Fehler                          */
  29. #define _READABLE 32
  30. #define _WRITEABLE 64
  31. #define _LINEBUF 128
  32. #define _NOTMYBUF 256
  33.  
  34. typedef struct _iobuf           /*  FILE-Struktur                   */
  35. {
  36.     char *filehandle;           /*  AmigaDos-Filehandle             */
  37.     char *pointer;              /*  Zeiger auf naechstes Zeichen    */
  38.     char *base;                 /*  Adresse des Buffers             */
  39.     struct _iobuf *next;        /*  Zeiger auf naechste Struktur    */
  40.     struct _iobuf *prev;        /*  tja, was wohl...                */
  41.     int count;                  /*  Anzahl Zeichen im Buffer        */
  42.     int flags;                  /*  Zugriffsmode                    */
  43.     int bufsize;                /*  Groesse des Buffers             */
  44. } FILE;
  45.  
  46. /*  stdin/out/err muss von _main() initialisiert werden     */
  47. extern FILE *stdin, *stdout, *stderr;
  48.  
  49. int _fillbuf(FILE *),_putbuf(int,FILE *),_flushbuf(FILE *);
  50.  
  51.  
  52. #define L_tmpnam        30
  53. #define TMP_MAX FOPEN_MAX
  54.  
  55. #define FILENAME_MAX 107
  56.  
  57. #ifndef __SIZE_T
  58. #define __SIZE_T 1
  59. typedef unsigned long size_t;
  60. #endif
  61.  
  62. #ifndef __FPOS_T
  63. #define __FPOS_T 1
  64. typedef long fpos_t;
  65. #endif
  66.  
  67. #ifndef __STDARG_H
  68. #include <stdarg.h>
  69. #endif
  70.  
  71. #undef NULL
  72. #define NULL ((void*)0)
  73.  
  74. FILE *fopen(const char *,const char *);
  75. FILE *freopen(const char *,const char *,FILE *);
  76. int fflush(FILE *);
  77. int fclose(FILE *);
  78. int rename(const char *,const char *);
  79. int remove(const char *);
  80. FILE *tmpfile(void);
  81. char *tmpnam(char *);
  82. int setvbuf(FILE *,char *,int,size_t);
  83. void setbuf(FILE *,char *);
  84. int fprintf(FILE *, const char *, ...);
  85. int printf(const char *, ...);
  86. int sprintf(char *, const char *,...);
  87. int __v0fprintf(FILE *, const char *);
  88. int __v0printf(const char *);
  89. int __v0sprintf(char *, const char *);
  90. int vprintf(const char *,va_list);
  91. int vfprintf(FILE *,const char *,va_list);
  92. int vsprintf(char *,const char *,va_list);
  93. int fscanf(FILE *, const char *, ...);
  94. int scanf(const char *, ...);
  95. int sscanf(const char *, const char *, ...);
  96. int vscanf(const char *,va_list);
  97. int vfscanf(FILE *,const char *,va_list);
  98. int vsscanf(const char *,const char *,va_list);
  99. char *fgets(char *, int, FILE *);
  100. int fputs(const char *, FILE *);
  101. char *gets(char *);
  102. int puts(const char *);
  103. int ungetc(int,FILE *);
  104. size_t fread(void *,size_t,size_t,FILE *);
  105. size_t fwrite(void *,size_t,size_t,FILE *);
  106. int fseek(FILE *,long,int);
  107. void rewind(FILE *);
  108. long ftell(FILE *);
  109. int fgetpos(FILE *,fpos_t *);
  110. int fsetpos(FILE *,const fpos_t *);
  111. void perror(const char *);
  112. int fgetc(FILE *);
  113. int fputc(int,FILE *);
  114. int getchar(void);
  115. int putchar(int);
  116.  
  117. #define __check(arg,type) sizeof((arg)==(type)0)
  118.  
  119. #define getc(p) (__check((p),FILE*),((p)->flags|=_READ),--((FILE*)(p))->count>=0?(unsigned char)*((FILE*)(p))->pointer++:_fillbuf(p))
  120. #define __putc(x,p) (((p)->flags|=_WRITE),((--((FILE*)(p))->count>=0&&((x)!='\n'||!(((FILE*)(p))->flags&_LINEBUF)))?(unsigned char)(*((FILE*)(p))->pointer++=(x)):_putbuf((x),p)))
  121. #define putc(x,f) fputc((x),(f))
  122. #define getchar() getc(stdin)
  123. #define putchar(x) putc((x),stdout)
  124.  
  125. /*  einige der Makros muessen wohl durch echte Funktionen ersetzt werden    */
  126. #define feof(p)         (__check((p),FILE*),((FILE*)(p))->flags&_EOF)
  127. #define ferror(p)       (__check((p),FILE*),((FILE*)(p))->flags&_ERR)
  128. /*#define fileno(p)       ((p)->filehandle) */      /*  macht das Sinn? */
  129. #define clearerr(p)     (__check((p),FILE*),((FILE*)(p))->flags&=~(_ERR|_EOF))
  130.  
  131. #define fsetpos(f,ptr)  fseek((f),*(ptr),SEEK_SET)
  132.  
  133. #pragma printflike printf
  134. #pragma printflike fprintf
  135. #pragma printflike sprintf
  136. #pragma scanflike scanf
  137. #pragma scanflike fscanf
  138. #pragma scanflike sscanf
  139.  
  140. #ifdef __INLINE_ALL
  141. #define __INLINE_FPUTC
  142. #define __INLINE_FGETC
  143. #define __INLINE_PUTS
  144. #define __INLINE_GETS
  145. #define __INLINE_FPUTS
  146. #define __INLINE_FGETS
  147. #define __INLINE_FPRINTF
  148. #define __INLINE_PRINTF
  149. #define __INLINE_SPRINTF
  150. #endif
  151.  
  152. #ifdef __INLINE_PUTC
  153. #pragma only-inline on
  154. #include "vbcc:libsrc/stdio/putc.c"
  155. #pragma only-inline off
  156. #endif
  157. #ifdef __INLINE_FPUTC
  158. #pragma only-inline on
  159. #include "vbcc:libsrc/stdio/fputc.c"
  160. #pragma only-inline off
  161. #endif
  162. #ifdef __INLINE_FGETC
  163. #pragma only-inline on
  164. #include "vbcc:libsrc/stdio/fgetc.c"
  165. #pragma only-inline off
  166. #endif
  167. #ifdef __INLINE_FPUTS
  168. #pragma only-inline on
  169. #include "vbcc:libsrc/stdio/fputs.c"
  170. #pragma only-inline off
  171. #endif
  172. #ifdef __INLINE_FGETS
  173. #pragma only-inline on
  174. #include "vbcc:libsrc/stdio/fgets.c"
  175. #pragma only-inline off
  176. #endif
  177. #ifdef __INLINE_PUTS
  178. #pragma only-inline on
  179. #include "vbcc:libsrc/stdio/puts.c"
  180. #pragma only-inline off
  181. #endif
  182. #ifdef __INLINE_GETS
  183. #pragma only-inline on
  184. #include "vbcc:libsrc/stdio/gets.c"
  185. #pragma only-inline off
  186. #endif
  187. #ifdef __INLINE_FPRINTF
  188. #pragma only-inline on
  189. #include "vbcc:libsrc/stdio/__v0fprintf.c"
  190. #pragma only-inline off
  191. #endif
  192. #ifdef __INLINE_PRINTF
  193. #pragma only-inline on
  194. #include "vbcc:libsrc/stdio/__v0printf.c"
  195. #pragma only-inline off
  196. #endif
  197. #ifdef __INLINE_SPRINTF
  198. #pragma only-inline on
  199. #include "vbcc:libsrc/stdio/__v0sprintf.c"
  200. #pragma only-inline off
  201. #endif
  202.  
  203. #endif
  204.  
  205.